/**
 * Created by JetBrains PhpStorm.
 * User: taoqili
 * Date: 12-2-20
 * Time: 上午11:19
 * To change this template use File | Settings | File Templates.
 */

(function () {
  var video = {},
    uploadVideoList = [],
    isModifyUploadVideo = false,
    uploadFile

  window.onload = function () {
    $focus($G('videoUrl'))
    initTabs()
    initVideo()
  }

  /* 初始化tab标签 */
  function initTabs () {
    var tabs = $G('tabHeads').children
    for (var i = 0; i < tabs.length; i++) {
      domUtils.on(tabs[i], 'click', function (e) {
        var j, bodyId, target = e.target || e.srcElement
        for (j = 0; j < tabs.length; j++) {
          bodyId = tabs[j].getAttribute('data-content-id')
          if (tabs[j] == target) {
            domUtils.addClass(tabs[j], 'focus')
            domUtils.addClass($G(bodyId), 'focus')
          } else {
            domUtils.removeClasses(tabs[j], 'focus')
            domUtils.removeClasses($G(bodyId), 'focus')
          }
        }
      })
    }
  }

  function initVideo () {
    addUrlChangeListener($G('videoUrl'))
    addOkListener();

    // 编辑视频时初始化相关信息
    (function () {
      var img = editor.selection.getRange().getClosedNode(), url
      if (img && img.className) {
        var hasFakedClass = (img.className == 'edui-faked-video'),
          hasUploadClass = img.className.indexOf('edui-upload-video') != -1
        if (hasFakedClass || hasUploadClass) {
          $G('videoUrl').value = url = img.getAttribute('_url')
          $G('videoWidth').value = img.width
          $G('videoHeight').value = img.height
          var align = domUtils.getComputedStyle(img, 'float'),
            parentAlign = domUtils.getComputedStyle(img.parentNode, 'text-align')
          updateAlignButton(parentAlign === 'center' ? 'center' : align)
        }
        if (hasUploadClass) {
          isModifyUploadVideo = true
        }
      } else if (dialog.anchorEl) {
            	var iframe = $(dialog.anchorEl).find('.video_iframe:first')
            	if (iframe.length > 0) {
            		$G('videoUrl').value = url = iframe.attr('src')
            	}
      }
      createPreviewVideo(url)
    })()
  }

  /**
     * 监听确认和取消两个按钮事件，用户执行插入或者清空正在播放的视频实例操作
     */
  function addOkListener () {
    dialog.onok = function () {
      $G('preview').innerHTML = ''
      return insertSingle()
    }
    dialog.oncancel = function () {
      $G('preview').innerHTML = ''
    }
  }

  /**
     * 依据传入的align值更新按钮信息
     * @param align
     */
  function updateAlignButton (align) {
    var aligns = $G('videoFloat').children
    for (var i = 0, ci; ci = aligns[i++];) {
      if (ci.getAttribute('name') == align) {
        if (ci.className != 'focus') {
          ci.className = 'focus'
        }
      } else {
        if (ci.className == 'focus') {
          ci.className = ''
        }
      }
    }
  }

  /**
     * 将单个视频信息插入编辑器中
     */
  function insertSingle () {
    var width = $G('videoWidth'),
      height = $G('videoHeight'),
      url = $G('videoUrl').value
    if (!url) return false
    if (!checkNum([width, height])) return false

    if (dialog.anchorEl) {
        	var conUrl = convert_url(url)
        	var iframe = $(dialog.anchorEl).find('.video_iframe:first')
        	iframe.attr('src', conUrl)
    } else {
        	var html = getVideoHtml(url)
        	if (html) {
        		editor.execCommand('insertHtml', html)
        	} else {
        		return false
        	}
    }

    /* editor.execCommand('insertvideo', {
            url: convert_url(url),
            width: width.value,
            height: height.value,
            align: align
        }, isModifyUploadVideo ? 'upload':null); */
  }

  function convert_url (url) {
    if (!url) return ''
    url = utils.trim(url)
      .replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/player.php/sid/$1/v.swf')
      .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, 'www.youtube.com/v/$2')
      .replace(/youtu.be\/(\w+)$/i, 'www.youtube.com/v/$1')
      .replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, 'player.ku6.com/refer/$1/v.swf')
      .replace(/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, 'player.56.com/v_$1.swf')
      .replace(/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, 'player.56.com/v_$1.swf')
      .replace(/v\.pps\.tv\/play_([\w]+)\.html.*$/i, 'player.pps.tv/player/sid/$1/v.swf')
      .replace(/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i, 'i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0')
      .replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, 'www.tudou.com/v/$1')
      .replace(/.+?\.qq\.com\/.+?\.html?.+?vid=([\w]+)(&.+)?/i, 'http://v.qq.com/iframe/preview.html?vid=$1&amp;auto=0')
      .replace(/v\.qq\.com\/.+\/([\w]+)\.html$/i, 'v.qq.com/iframe/preview.html?vid=$1&amp;auto=0')
      .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\.html?vid=([\w]+)/i, 'v.qq.com/iframe/preview.html?vid=$1&amp;auto=0')
      .replace(/v\.qq\.com\/[\w]+\/[\w]+\/[\w]+\/[\w]+\/[\w]+\/([\w]+)\.html/i, 'v.qq.com/iframe/preview.html?vid=$1&amp;auto=0')
      .replace(/v\.qq\.com\/[\w]+\/[\w]+\/[\w]+\/[\w]+\/([\w]+)\.html/i, 'v.qq.com/iframe/preview.html?vid=$1&amp;auto=0')
      .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/[\w]+\/([\w]+)\.html/i, 'v.qq.com/iframe/preview.html?vid=$1&amp;auto=0')
      .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i, 'v.qq.com/iframe/preview.html?vid=$1&amp;auto=0')
      .replace(/v\.qq\.com\/cover\/[\w]+\/([\w]+)\.html/i, 'v.qq.com/iframe/preview.html?vid=$1&amp;auto=0')
      .replace(/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i, 'v.qq.com/iframe/preview.html?vid=$1&amp;auto=0')
      .replace(/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i, 'share.vrs.sohu.com/my/v.swf&id=$1')
    // http://v.qq.com/iframe/preview.html?vid=u0100zvfnxt&amp;auto=0
    // http://v.qq.com/x/page/z0319ezsea5.html
    // http://cache.tv.qq.com/clientportal/v9_6/main.html?cid=x&vid=n0310j4ozgw
    // http://v.qq.com/page/w/1/5/w01002z2j15.html
    return url
  }

  /**
      * 检测传入的所有input框中输入的长宽是否是正数
      * @param nodes input框集合，
      */
  function checkNum (nodes) {
    for (var i = 0, ci; ci = nodes[i++];) {
      var value = ci.value
      if (!isNumber(value) && value) {
        alert(lang.numError)
        ci.value = ''
        ci.focus()
        return false
      }
    }
    return true
  }

  /**
     * 数字判断
     * @param value
     */
  function isNumber (value) {
    return /(0|^[1-9]\d*$)/.test(value)
  }

  /**
     * 选择切换
     * @param selectParentId
     */
  function switchSelect (selectParentId) {
    var selects = $G(selectParentId).children
    for (var i = 0, ci; ci = selects[i++];) {
      domUtils.on(ci, 'click', function () {
        for (var j = 0, cj; cj = selects[j++];) {
          cj.className = ''
          cj.removeAttribute && cj.removeAttribute('class')
        }
        this.className = 'focus'
      })
    }
  }

  /**
     * 监听url改变事件
     * @param url
     */
  function addUrlChangeListener (url) {
    if (browser.ie) {
      url.onpropertychange = function () {
        createPreviewVideo(this.value)
      }
    } else {
      url.addEventListener('input', function () {
        createPreviewVideo(this.value)
      }, false)
    }
  }

  function getVideoHtml (url) {
    	var reg = /^(?:http(?:s|):\/\/|)(?:(?:\w*?)\.|)+(?:\w*?)\.(?:\w{2,4})(?:\?.*|\/.*|)$/ig
    if (!reg.test(url)) {
        	alert('请输入合法的网址')
        	return false
    }

    	var conUrl = convert_url(url)
    if (conUrl.indexOf('qq.com') !== -1) {
      return '<section class="135editor" >' +
        '<section style="text-align:center;"><iframe class="video_iframe"  style="position: relative;z-index:1;height:240px;width:320px;"  scrolling="no" src="' + conUrl + '" allowfullscreen="" frameborder="0" ></iframe></section>' +
        '<p class="135brush" data-brushtype="text" style="text-align:center;">视频名称</p></section>'
    } else {
      return '<div class="previewMsg"><span>' + lang.urlError + '</span></div>' +
        '<embed class="previewVideo" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"' +
            ' src="' + conUrl + '"' +
            ' width="' + 420 + '"' +
            ' height="' + 280 + '"' +
            ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" >' +
        '</embed>'
    }
  }

  /**
     * 根据url生成视频预览
     * @param url
     */
  function createPreviewVideo (url) {
    if (!url) return
    var reg = /^(?:http(?:s|):\/\/|)(?:(?:\w*?)\.|)+(?:\w*?)\.(?:\w{2,4})(?:\?.*|\/.*|)$/ig
    if (!reg.test(url)) {
        	return false
    }
    // <iframe style="   z-index:1; " src="http://v.qq.com/iframe/preview.html?vid=u0100zvfnxt&amp;auto=0" allowfullscreen="" frameborder="0" height="200" width="300"></iframe>

    $G('preview').innerHTML = getVideoHtml(url)
  }
})()
